Nowadays a corporation typically has more than one enterprise software system that provides features for aspects of the corporation's business. For example, a corporation may use several different specialized software systems such as customer relationship management, bookkeeping, and resources planning systems. Additionally, business data is stored at multiple locations and in multiple databases, and the data may be maintained by different business entities. To prepare a deep analysis of its business, it may be desirable for the corporation to analyze a substantial amount of its business data. To perform such a heavy task, the corporation may use data federation technology.
Data federation technology provides the corporation with the ability to aggregate data from disparate data sources into a virtual database so that the data can be used for complex data analysis. The virtual database created by data federation technology does not contain the data itself. Rather, the virtual database contains information about the actual data and their location, and the actual data is left in its original place. The use of data federation may be especially useful when a corporation's data is stored offsite, for example, by a third-party cloud service provider.
A federated system is a collection of cooperating but autonomous data sources belonging to a federation. The data sources belonging to the federation cooperate with each other yet maintain some degree of autonomy. A federated system allows a client to send requests to multiple data sources with the use of a single federated query. A federated query is a query that contains several embedded source queries, and each source query is specific to a data source. A source query that is specific to a data source is written in a format that is understandable by the data source and may be executable at the data source. In a federated system, a federated server may receive a federated query from the client and send each source query embedded in the federated query to the appropriate data source for execution. When a client submits a federated query, the federated server may return a result of the federated query by retrieving results from the applicable data sources.
When a client desires to submit a read query, the client will contact any database server belonging to the federation and receive a result from that database server. When a client desires to submit a write query, the federated system submits a distributed transaction in order to write to all of the database servers simultaneously. The write operation is typically an expensive operation in the federated system.